// DefaultDecisionTree.java
package org.zjx.core;

/**
 * 默认决策树实现 - 决策树的基本实现类
 *
 * 这个类提供了决策树的最基本实现，简单地委托给根节点执行决策。
 * 可以作为更复杂决策树实现的基类或直接使用。
 */
public class DefaultDecisionTree implements DecisionTree {
    // 决策树的根节点，所有决策从这里开始
    private final DecisionNode root;

    /**
     * 构造函数
     *
     * @param root 决策树的根节点
     */
    public DefaultDecisionTree(DecisionNode root) {
        this.root = root;
    }

    /**
     * 根据上下文生成动作
     *
     * @param context 决策上下文
     * @return 游戏动作，可能为null表示无动作
     */
    @Override
    public GameAction decide(DecisionContext context) {
        // 简单委托给根节点执行决策
        return root.decide(context);
    }

    /**
     * 获取根节点(用于调试)
     *
     * @return 决策树的根节点
     */
    @Override
    public DecisionNode getRootNode() {
        return root;
    }
}